all: clean compile simulate 

compile:
	iverilog -o ./My_code/build/simv \
	./My_code/tb_LC3.v \
	./My_code/mux16_4to1.v \
	./My_code/mux16_8to1.v \
	./My_code/mux_2to1.v \
	./My_code/half_adder.v \
	./My_code/full_adder.v \
	./My_code/add_16.v \
	./My_code/ALU_3basic_fixed.v \
	./test/src/register_16.v \
	./test/src/register.v \
	./My_code/ram.v \
	./My_code/pc.v \
	./My_code/pc_reg.v \
	./My_code/FSM.v \
	./My_code/LC_3.v  \
	./My_code/tristate.v \
	./My_code/decoder_3to8.v \
	./My_code/DFF.v \
	./My_code/register_16_copy.v
	
simulate:
	vvp -n ./My_code/build/simv #vvp为仿真语句，会生成测试激励中所规定的vcd文件
	
gtkwave:
	gtkwave tb_****.vcd


clean:
	@rm -rf wave
	@rm -rf tb_****.vcd
	@rm -rf ./build/simv
	@rm -rf ./src/D_latch.v.out #可以不写省略这一行，因为已经把v.out文件命名为simv文件了，故不会生成v.out文件